TThread vs BeginThread

Otázka od: Andreas Bednarek

19. 11. 2004 10:56

Ahoj, prosim o radu

Muzu ukoncit vlakno vytvorene takto
MyThread := TThread.Create(...)
 f-ci TerminateThread?

Jedna se o to, ze pouzivam (musim) 3rd party knihovnu, ktera nekdy zatuhne,
proto ji taky poustim v threadu, delam to pomoci BeginThread, ted probiha lehky
refaktoring kodu a pouzil bych asi TThread, jina vlakna, ktera spoustim muzou
zase profitovat s vlastnosti Terminated.

Jen si proste nejsem jisty co udela TerminateThread(MyThread.Handle) kdyz uz je
to nutne a bude-li to mit vliv na udalost OnTerminate.. Rekl bych, ze s klidkem
provedu

TerminateThread(MyThread.Handle);
MyThread.Free;

a vse ok? OnTerminate se asi nevyvola.

Co po TerminateThread volat MyThread.Terminate misto Free?


Dik za radu odjakziva pouzivam BeginThread, s TThread nemam zkusenosti.
A.B.
D4 WXPPro

Odpovedá: delphin@post.cz

19. 11. 2004 11:36

> Jen si proste nejsem jisty co udela TerminateThread(MyThread.Handle) kdyz
uz je to nutne a bude-li to mit vliv na udalost OnTerminate.. Rekl bych, ze
s klidkem provedu

TerminateThread nasilne ukonci vlakno a protoze se vlakno nemuze ukoncit
regulerne, zpravidla posleze dojde v prislusne procesu k nepredvidatelnym
chybam. OnTerminate se nevyvola, protoze ho nema kdo zavolat.